<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        const obj = {
            uname: '张三',
            age: 18,
            hobby: ['乒乓球', '足球'], 
            family: {
                body: '小pink'
            }
        }
        const o = {}
        //拷贝函数
        function deepCopy(newObj, oldObj){
            for(let k in oldObj) {
                //处理数组的问题 一定先写数组 再写对象 不能颠倒
                if(oldObj[k] instanceof Array){
                    newObj[k] = []
                    // newObj[k] 接受 []
                    // oldObj[k] ['乒乓球', '足球']
                    deepCopy(newObj[k], oldObj[k])
                }else if(oldObj[k] instanceof Object){
                    newObj[k] = {}
                    // newObj[k] 接受 []
                    // oldObj[k] ['乒乓球', '足球']
                    deepCopy(newObj[k], oldObj[k])
                }else{
                    // k 属性名  oldObj[k] 属性值
                    // newObj[k] === o.uname  给新对象添加属性
                    newObj[k] = oldObj[k]
                }
                
            }
        }
        deepCopy(o, obj) // 函数调用 两个参数 o 新对象 obj 旧对象
        console.log(o);
        o.age = 20
        o.hobby[0] = '篮球'
        o.family.baby = '老pink'
        console.log(obj);
    </script>
</body>
</html>